﻿package com.google.code.p.ivans.patternsentities;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLException;
import java.util.GregorianCalendar;
import java.util.Scanner;

import com.google.code.p.ivans.entities.Waiter;

public class AddWaiterHandler extends Handler {
	
	public void handle() {
		
		String first = "";
		String last = "";
		String patronymic = "";
		int dayBorn = 0;
		int monthBorn = 0;
		int yearBorn = 0;
		int salary = 0;
		
		//читаем с консоли данные
		try{							
			System.out.println(">>Введите Имя:");
			while((first = Main.bufread.readLine()).length() < 1) {}
			
			
			System.out.println(">>Введите Фамилию:");
			while((last = Main.bufread.readLine()).length() < 1) {}							
		
			
			System.out.println(">>Введите Отчество:");
			while((patronymic = Main.bufread.readLine()).length() < 1) {}
			
			System.out.println(">>Введите день рождения:");
			dayBorn = Main.scanner.nextInt();
			
			System.out.println(">>Введите месяц рождения:");
			monthBorn = Main.scanner.nextInt();
			
			System.out.println(">>Введите год рождения:");
			yearBorn = Main.scanner.nextInt();
			
			System.out.println(">>Введите зарплату:");
			salary = Main.scanner.nextInt();	
			
			//создаем и добавляем
			try{
				Waiter waiter = new Waiter(first, last, patronymic, 
										new GregorianCalendar(yearBorn, monthBorn - 1, dayBorn),
										new GregorianCalendar(),
										salary);
				Main.waiterSI.addWaiter(waiter);
				//System.out.println("ОФИЦИАНТ ДОБАВЛЕН");	
				
				if(Main.logger.isInfoEnabled()){
					Main.logger.info("[INFO]Создали официанта:\n" + waiter.toString());
				}
			}
			catch(IllegalArgumentException enfexc) {
				//System.out.println("Не удалось создать объект. Причина - " + enfexc.getMessage());									
				//logger.ERROR
				Main.logger.error("[ERROR]Не удалось создать объект. Причина - " + enfexc.getMessage());
			}
			catch(SQLException ioe) {
				//System.out.println("Ошибка записи данных официанта в бд. Причина - " + ioe.getMessage());

				Main.logger.error("[ERROR]Ошибка записи данных официанта в файл. Причина - " + ioe.getMessage());
				
				System.out.println("ioe.getMessage():" + ioe.getMessage().substring(0, ioe.getMessage().length() - 1));
				System.out.println("ioe.getLocalizedMessage():" + ioe.getLocalizedMessage());
				System.out.println("ioe.getSQLState():" + ioe.getSQLState());
				System.out.println("ioe.getCause():" + ioe.getCause());
				System.out.println("ioe.getErrorCode():" + ioe.getErrorCode());
			}							
		}						
		catch(IOException ioexc) {
			//System.out.println("Ошибка чтения данных. Причина - " + ioexc.getMessage());

			Main.logger.error("[ERROR]Ошибка чтения данных. Причина - " + ioexc.getMessage());
		}
	}

}
